API
创建
创建/获取技能
- 参数
- name (string) - 技能名
- 返回
- skill (skill) - 技能数据表
需要在技能表中定义过名称为name
的技能,才能在脚本中创建。
local mt = base.skill['技能名']
使用add_skill来给单位添加技能。
local skill = unit:add_skill('技能名', '英雄')
属性
你可以直接从技能中读取到当前的属性
local cd = skill.cool
owner
拥有技能的单位(unit)
不能自定义,这个属性被设置为add_skill时的对象。
name
技能名
get_name方法会优先获取这个值。你可以利用这个属性来方便的制作一个技能的多个版本:
local mt1 = base.skill['超电磁炮']
local mt2 = base.skill['超电磁炮-改']
mt2.name = '超电磁炮'
-- 这样你在其他地方就不用关心到底是哪个技能
if skill:get_name() == '超电磁炮' then
-- 超电磁炮 与 超电磁炮-改 都会成立
end
方法
active_cd
激活冷却
由c++实现的api
- 参数
- max_cd (number) - 冷却上限(秒)
- ignore_cooldown_reduce (boolean) - 是否无视冷却缩减
这个方法有3种用法
- 激活冷却(如同使用了技能)
skill:active_cd()
- 按照指定冷却上限来激活冷却
skill:active_cd(30)
- 按照指定冷却上限来激活冷却,并且决定是否受冷却缩减的影响
-- 无视冷却缩减
skill:active_cd(30, true)
-- 计算冷却缩减
skill:active_cd(30, false)
add_cd
增加剩余冷却
由c++实现的api
- 参数
- cd (number) - 冷却
只对已经在冷却状态的技能有效,单位为秒。这个方法在用于充能型技能时,可以正确的改变层数。
skill:add_cd(1)
add_level
增加等级
由c++实现的api
- 参数
- lv (integer) - 等级
技能等级不能降低,且不能在技能的施法事件中改变技能等级。
skill:add_level(1)
add_stack
增加层数
由c++实现的api
- 参数
- stack (integer) - 层数
skill:add_stack(1)
channel_finish
引导完成
由c++实现的api
立即完成技能的引导,使技能进入施法出手阶段。只能在施法引导阶段中使用。
skill:channel_finish()
get_stage
获取当前技能阶段
由c++实现的api
获取当前技能阶段返回int, 如果返回-1表示skill为空,0到4分别表示空闲阶段、CastStart、CastChannel、CastShot、CastFinish。
skill:get_stage()
stage_finish
当前技能阶段完成,
由c++实现的api
立即完成技能当前阶段,使技能进入下一阶段。
skill:stage_finish()
stage_pause
服务器技能阶段暂停
由c++实现的api
只对当前阶段是channel和shot有效。效果为服务器阶段暂停不 再更新,客户端循环播放当前阶段动画。
skill:stage_pause()
stage_resume
服务器技能阶段恢复
由c++实现的api
只对当前阶段是channel和shot而且暂停了有效。效果为服务器阶段恢复更新。
skill:stage_resume()
is_stage_paused
是否处于暂停
由c++实现的api
只对当前阶段是channel和shot而且有效。
local flag = skill:is_stage_paused()
is_stage_paused
是否处于暂停
由c++实现的api
只对当前阶段是channel和shot而且有效。
local flag = skill:is_stage_paused()
get_stage_remaining_time
获得当前阶段剩余时间
由c++实现的api
返回整数,单位毫秒
local time = skill:get_stage_remaining_time()
set_stage_remaining_time
设置当前阶段剩余时间
由c++实现的api
仅仅用于channel和shot阶段,且需要是暂停后,修改剩余时间。 修改后只会生效一次,即再次使用技能不会生效。
- 参数
- time (int) - 单位毫秒
skill:get_stage_remaining_time(5000)